[Chaos CD]
[Datenschleuder] [39]    Marodierende Disharmonische oder
[Gescannte Version] [ -- ] [ ++ ] [Suchen]  

 

Marodierende Disharmonische oder

Wie kriegen wir denn nun die zwei Töne nach draußen ?

Es gilt, eine Vollwelle der Summe zweier Frequenzen zu berechnen, wobei mit "Vollwelle" eine Teilkurve gemeint ist, durch deren Wiederholung man die gesamte Kurve der Summenfrequenz erhält. Theoretisch ist das einfach, aber praktisch hat man, wie immer, mit Rechenzeit und Rundungsfehlern zu kämpfen. Die Schrittweite rechnet sich mit der Formel
 
s1       =        f1      ==      0.0? 
0.0:/2*M_PI)/((1.0/f1)/SAMPTIME); 
s2       =        f2      ==      0.0? 
0.0:/2*M_PI)/((1.0/f2)/SAMPTIME); 
wobei f1 und f2 die zu addierenden Frequenzen und SAMPTIME die Abspielfrequenz der Samples ist. Nun geht es in eine halbendlose Schleife, in der die Sinus-Werte der beiden Frequenzen gerechnet und addiert werden. Halbendlos, weil die Schleife eine Abbruchbedingung hat. u1 und u2 sind Punkte in den Sinus-Kurven von fl und f2, deren Sinus-Werte zusammen- addiert werden. Ist die Bedingung u1 mod 2*PI < si und u2 mod 2*PI < s2 erfüllt, so wird die Schleife abgebrochen.

u1 = 0.0; u2 = 0.0;

 
do 
{ 
  f3 = sin(u1) + sin(u2); 
  printf("%lf\n", f3); 
  u1 += s1; 
  u2 += s2; 
  c1 = fmod(u1, 2*M-PI) < s1; 
  c2 = fmod(u2, 2*M-Pl) < s2; 
  if((s2 == 0.0 && c1) || (sl == 0.0 kk c2) || 
  (s1 == 0.0 && s2 == 0.0) || (c1 && c2)) 
    break; 
} while(42); 
 

phg [Sorry... leider konnten wir die Zeile mit der if-Frage nicht "sauber" ausdrucken]

 

  [Chaos CD]
[Datenschleuder] [39]    Marodierende Disharmonische oder
[Gescannte Version] [ -- ] [ ++ ] [Suchen]